package demo.service;

import demo.Result;
import demo.entity.Company;
import demo.repository.CompanyRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 公司 Service
 *
 * @author 何宇昕
 * @version 1.4
 */
@Service
public class CompanyService {

    @Autowired
    CompanyRepository companyRepository;

    /**
     * 添加公司
     *
     * @param company 公司对象
     * @return 提示信息
     */
    public Result add(Company company) {
        // 检测公司名是否重复
        if (isRepeat(company)) {
            return Result.error("公司已存在");
        }

        // 存入公司数据
        companyRepository.save(company);
        return Result.success("公司信息注册成功", company);
    }

    public Result update(Company company) {
        companyRepository.save(company);
        return Result.success("公司信息修改成功", company);
    }

    /**
     * 公司是否已经存在
     *
     * @param company 公司对象
     * @return 公司是否存在
     */
    private Boolean isRepeat(Company company) {
        Company existingCompany = companyRepository.findCompanyByCompanyName(company.getCompanyName());
        return !(existingCompany == null);
    }

    /**
     * 按 公司名 完全匹配查找公司
     *
     * @param companyName 公司名
     * @return 查询结果
     */
    public Result find(String companyName) {
        Company company = companyRepository.findCompanyByCompanyName(companyName);
        return findResult(company);
    }

    /**
     * 按 公司 id 完全匹配查找公司
     *
     * @param companyId 公司 id
     * @return 查询结果
     */
    public Result find(Long companyId) {
        Company company = companyRepository.findCompanyByCompanyId(companyId);
        return findResult(company);
    }

    private Result findResult(Company company) {
        if (company == null) {
            return Result.error("公司不存在");
        }
        return Result.success("公司查找成功", company);
    }

    public List<Company> listCompanies() {
        return companyRepository.findAll();
    }
}
